package com.wendy.service;

import com.wendy.model.User;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author zhuwending
 */
@Service
public interface BaseService<T> {

    /**
     * 根据认证信息查询用户信息
     *
     * @return 用户信息
     */
    User currentUser();

    /**
     * 查询
     *
     * @param key 一般为id
     * @return 实体类
     */
    T selectByKey(Object key);

    /**
     * 新增
     *
     * @param entity 实体类
     * @return Affected rows
     */
    int save(T entity);

    /**
     * 删除
     *
     * @param o 对象
     * @return Affected rows
     */
    int delete(Object o);

    /**
     * @param entity Entity
     * @return Affected rows
     */
    int updateAll(T entity);

    /**
     * @param entity Entity
     * @return Affected rows
     */
    int updateNotNull(T entity);

    /**
     * @param example Object
     * @return List
     */
    List<T> selectByExample(Object example);

    /**
     * @param entity Entity
     * @return Affected rows
     */
    int insert(T entity);

    /**
     * @param entity Entity
     * @return Affected rows
     */
    int update(T entity);

    /**
     * @param ids form by id and
     * @return Affected rows
     */
    int logicDelete(String ids);
}
